{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "04c4537d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "745b6868",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ID</th>\n",
       "      <th>Video traffic</th>\n",
       "      <th>social traffic</th>\n",
       "      <th>Web browsing traffic</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>10942</td>\n",
       "      <td>22</td>\n",
       "      <td>42</td>\n",
       "      <td>1528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>13382</td>\n",
       "      <td>15</td>\n",
       "      <td>24</td>\n",
       "      <td>1120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>4192</td>\n",
       "      <td>1</td>\n",
       "      <td>2708</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>10908</td>\n",
       "      <td>4</td>\n",
       "      <td>260</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>14130</td>\n",
       "      <td>35</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0     ID  Video traffic  social traffic  Web browsing traffic\n",
       "0           0  10942             22              42                  1528\n",
       "1           1  13382             15              24                  1120\n",
       "2           2   4192              1            2708                     0\n",
       "3           3  10908              4             260                    15\n",
       "4           4  14130             35              28                     0"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./data/data_cluster.csv',encoding='gbk',header=0)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4ef7ac0",
   "metadata": {},
   "source": [
    "1, 使用MinMaxScaler函数对数据进行归一化处理，将数据存储为df_norm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "d84ab41d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "52eedf17",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ID</th>\n",
       "      <th>Video traffic</th>\n",
       "      <th>social traffic</th>\n",
       "      <th>Web browsing traffic</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.547077</td>\n",
       "      <td>0.189655</td>\n",
       "      <td>0.008173</td>\n",
       "      <td>0.267835</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.00005</td>\n",
       "      <td>0.669083</td>\n",
       "      <td>0.129310</td>\n",
       "      <td>0.004670</td>\n",
       "      <td>0.196319</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.00010</td>\n",
       "      <td>0.209560</td>\n",
       "      <td>0.008621</td>\n",
       "      <td>0.526951</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.00015</td>\n",
       "      <td>0.545377</td>\n",
       "      <td>0.034483</td>\n",
       "      <td>0.050594</td>\n",
       "      <td>0.002629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.00020</td>\n",
       "      <td>0.706485</td>\n",
       "      <td>0.301724</td>\n",
       "      <td>0.005449</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>0.99980</td>\n",
       "      <td>0.905095</td>\n",
       "      <td>0.051724</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>0.99985</td>\n",
       "      <td>0.910796</td>\n",
       "      <td>0.008621</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>0.99990</td>\n",
       "      <td>0.917346</td>\n",
       "      <td>0.120690</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>0.99995</td>\n",
       "      <td>0.922846</td>\n",
       "      <td>0.896552</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19999</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>0.933197</td>\n",
       "      <td>0.146552</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0        ID  Video traffic  social traffic  \\\n",
       "0         0.00000  0.547077       0.189655        0.008173   \n",
       "1         0.00005  0.669083       0.129310        0.004670   \n",
       "2         0.00010  0.209560       0.008621        0.526951   \n",
       "3         0.00015  0.545377       0.034483        0.050594   \n",
       "4         0.00020  0.706485       0.301724        0.005449   \n",
       "...           ...       ...            ...             ...   \n",
       "19995     0.99980  0.905095       0.051724        0.000000   \n",
       "19996     0.99985  0.910796       0.008621        0.000000   \n",
       "19997     0.99990  0.917346       0.120690        0.000000   \n",
       "19998     0.99995  0.922846       0.896552        0.000000   \n",
       "19999     1.00000  0.933197       0.146552        0.000000   \n",
       "\n",
       "       Web browsing traffic  \n",
       "0                  0.267835  \n",
       "1                  0.196319  \n",
       "2                  0.000000  \n",
       "3                  0.002629  \n",
       "4                  0.000000  \n",
       "...                     ...  \n",
       "19995              0.000351  \n",
       "19996              0.000000  \n",
       "19997              0.000000  \n",
       "19998              0.000000  \n",
       "19999              0.000000  \n",
       "\n",
       "[20000 rows x 5 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_mm = MinMaxScaler()\n",
    "df_norm = model_mm.fit_transform(df)\n",
    "df_norm = pd.DataFrame(data=df_norm,columns=df.columns)\n",
    "df_norm"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d220315",
   "metadata": {},
   "source": [
    "2.使用SpecteralClustering 算法选择K值2-12对数据进行聚类分析，使用轮廓系数进行评估，将轮廓系数和K值存储在列表k和silhouette_s中，并绘制折线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "12024391",
   "metadata": {},
   "outputs": [],
   "source": [
    "#由考生填写\n",
    "from sklearn.cluster import SpectralClustering\n",
    "from sklearn.metrics import silhouette_score\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3e8c5b86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '轮廓系数')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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UTZu3MiyZcv4z3/+Q1JSEl26dKFFixZqROtCPj4+V015ULBgQVJTUy2qyPNZ9buowONCa9as4d133+WTTz6hQIECVpfjcUaPHk1YWBgtW7a0uhSPd+jQIcLDwylevDhg/khUr15d7Uty2aeffkrnzp2pX78+gYGBvPnmm+zdu5e4uDirS/NYQUFBnDhxIsu+lJQUPa51ESt/F9WGx0X27dtHly5dePfdd6latarV5XikTz75hBMnTlC0aFEAUlNTWbBgARs3buS9996ztjgPU65cuaseXx04cIAGDRpYVJFnyszM5OTJk87tlJQUUlNTycjIsLAqzxYWFsaMGTOc2/v27SMtLY2goCALq/JMVv8uKvC4wPnz52nVqhWPP/44bdu25ezZswAULlwYm81mcXWe48cff+TSpUvO7RdffJHw8HB143WBli1bMnDgQKZPn06rVq344osviIuLY+HChVaX5lEefPBBevToQe3atbntttuYOXMmpUqVonr16laX5rEaNmyIw+Fgzpw59OrVi6ioKCIiIvD29ra6NI+SL34XDcl1X375pQFctezbt8/q0jxajx49jDlz5lhdhsf66aefjPDwcKNQoUJGpUqVjKVLl1pdksfJzMw0Ro0aZZQvX94oUKCAUatWLWPLli1Wl+Vx/ve/x0uWLDH8/PyM4OBgo0SJEsaOHTusK86D/PU654ffRdt/ixIREbllHTt2jM2bNxMeHk5wcLDV5YgLKPCIiIiIx1MvLREREfF4CjwiIiLi8RR4RERExOMp8IiIiIjHU+ARERERj6fAIyIulZ6eTmZmZpZ9mZmZpKWlcf78+atey67rjT5sGAYzZ84kJSUly/5p06ZlGcX4WscdPHjwqv1//vnn36pPRPIXBR4RcamoqCiCg4MJDQ3lnnvu4c4776Rw4cK8+OKLVKpUidDQUCpWrEihQoWYOXOm87izZ8/Srl07tm/fDsAzzzxDdHQ0ACtWrOCee+7B4XBc9Xn79+9n0KBBWfadOHGCAQMGcOrUqevWOX36dB577DHS09MxDIOLFy9y/Phx7r77bjZu3AiYISs9Pd1Z31tvvYVhGDRu3Jgvv/ySFStWsHTpUtLS0qhatSqHDx/+ZxdPRHKNppYQEZd6/fXX2bdvH9u2baNYsWJcuHABf39/Jk6cSO3atenRoweZmZlUqFCBxx57zHlc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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "k,silhouette = [],[]\n",
    "for i in range(2,13):\n",
    "    sc_model = SpectralClustering(n_clusters=i)\n",
    "    sc_model.fit(X=df_norm)\n",
    "    result = sc_model.labels_\n",
    "    k.append(i)\n",
    "    s = silhouette_score(df_norm,result)\n",
    "    silhouette.append(s)\n",
    "# 设置中文字体\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "#由考生填写\n",
    "plt.figure()\n",
    "plt.title('SpectralClustering')\n",
    "#由考生填写\n",
    "plt.plot(k,silhouette,'r')\n",
    "plt.xlabel('聚类的簇数')\n",
    "plt.ylabel('轮廓系数')\n",
    "#由考生填写"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
